package pers.ijfxu.testngext.utils;

import java.io.UnsupportedEncodingException;

/**
 * 字符串工具类
 *
 * @author ijfxu  
 * @since 2021/5/26 23:27
 */
public class StrUtils {

    public static String getStrHead(String tmp, String split) {
        return getStr(tmp, split, 0);
    }

    /**
     * 通过分隔符分割后返回最后一段字符串
     *
     * @param tmp   字符串
     * @param split 分隔符
     * @return java.lang.String 
     * @author ijfxu
     * @since 2021/5/26 23:28
     */
    public static String getStrTail(String tmp, String split) {
        return getStr(tmp, split, Integer.MAX_VALUE);
    }

    /**
     * 字符串通过分隔符进行分割后获取指定位置的字符串
     *
     * @param tmp   字符串
     * @param split 分隔符
     * @param index 指定下表
     * @return java.lang.String 
     * @author ijfxu
     * @since 2021/5/26 23:36
     */
    public static String getStr(String tmp, String split, int index) {
        String[] arrs = tmp.split(split);
        if (arrs.length > index) {
            return arrs[index];
        } else {
            return arrs[arrs.length - 1];
        }
    }

    /**
     * 判断字符串是否不为空
     *
     * @param tmp 字符串
     * @return boolean 
     * @author ijfxu
     * @since 2021/5/26 23:37
     */
    public static boolean unempty(String tmp) {
        return !empty(tmp);
    }

    /**
     * 判断字符串是否为空
     *
     * @param tmp 字符串
     * @return boolean 
     * @author ijfxu
     * @since 2021/5/26 23:38
     */
    public static boolean empty(String tmp) {
        return null == tmp || "".equals(tmp.trim());
    }

    /**
     * 判断两个字符串是否相等
     *
     * @param var1 字符串1
     * @param var2 字符串2
     * @return boolean 
     * @author ijfxu
     * @since 2021/5/26 23:38
     */
    public static boolean equal(String var1, String var2) {
        if (null != var1) {
            return var1.equals(var2);
        }
        if (null != var2) {
            return var2.equals(var1);
        }
        return true;
    }

    /**
     * 判断两个字符串是否不相等
     *
     * @param var1 字符串1
     * @param var2 字符串2
     * @return boolean 
     * @author ijfxu
     * @since 2021/5/26 23:38
     */
    public static boolean unequal(String var1, String var2) {
        return !equal(var1, var2);
    }

    /**
     * 字符串编码由utf-8转gbk
     * 
     * @param val utf-8编码的字符串
     * @return String  
     * @author ijfxu
     * @since 2022/4/18 23:38
     */
    public static String utf8ToGBK(String val) {
        return changeCharset(val, CharSet.UTF_8, CharSet.GBK);
    }

    /**
     * 字符串编码由gbk转utf-8
     * 
     * @param val gbk编码的字符串
     * @return String  
     * @author ijfxu
     * @since 2022/4/18 23:38
     */
    public static String gbkToUTF8(String val) {
        return changeCharset(val, CharSet.GBK, CharSet.UTF_8);
    }

    /**
     * 转换字符串编码
     * 
     * @param val        字符串
     * @param oldCharset 原字符串编码
     * @param newCharset 期望转换的字符串编码
     * @return String  
     * @author ijfxu
     * @since 2022/4/18 23:38
     */
    public static String changeCharset(String val, CharSet oldCharset, CharSet newCharset) {
        String resultVal = null;
        try {
            byte[] valBytes = val.getBytes(oldCharset.value());
            resultVal = new String(valBytes, newCharset.value());
        } catch (UnsupportedEncodingException e) {
            System.err.println(e.getMessage());
        }
        return resultVal;
    }

    public enum CharSet {
        US_ASCII("US-ASCII"), UTF_8("UTF-8"), GBK("GBK");

        private String name;

        private CharSet(String name) {
            this.name = name;
        }

        public String value() {
            return this.name;
        }

    }
}
